﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using System.ComponentModel;
using Mani.Common;

namespace RastinArgham.Website.Models
{
    public class OrderViewDTO
    {
        #region contact properties

        [Display(Name = "عنوان شخص")]
        public String ContactTitle { get; set; }

        [Display(Name = "آدرس")]
        [StringLength(400, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد آدرس چهارصد حرف می باشد")]
        [Required(ErrorMessage="پر کردن فیلد آدرس الزامی می باشد")]
        public String Address { get; set; }

        [Display(Name = "کد پستی")]
        [StringLength(20, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد کد پستی بیست حرف می باشد")]
        public String ZipCode { get; set; }

        [Display(Name = "شهر")]
        [RequiredWithInitialValue(ErrorMessage = "انتخاب شهر الزامی می باشد", InitialValueString="-1")]
        public int? CityId { get; set; }

        [Display(Name = "تلفن ثابت")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد تلفن ثابت پنجاه حرف می باشد")]
        public String Phone { get; set; }

        [Display(Name = "تلفن همراه")]
        [Required(ErrorMessage = "پر کردن فیلد تلفن همراه الزامی می باشد")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد تلفن همراه پنجاه حرف می باشد")]
        public String MobilePhone { get; set; }
        
        [Display(Name="نوع شخص")]
        [RequiredWithInitialValue(ErrorMessage = "انتخاب نوع شخص الزامی می باشد",InitialValueString="-1")]
        public int? ContactTypeId { get; set; }

        [Display(Name = "فکس")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد فکس پنجاه حرف می باشد")]
        public String Fax { get; set; }

        [Display(Name = "ایمیل")]
        [Required(ErrorMessage = "پر کردن فیلد ایمیل الزامی می باشد")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد ایمیل پنجاه حرف می باشد")]
        [Email(ErrorMessage = "آدرس ایمیل معتبر نمی باشد")]
        public String Email { get; set; }

        [Display(Name = "وب سایت")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد وب سایت پنجاه حرف می باشد")]
        public String Website { get; set; }

        #endregion

        #region personal contact properties

        [Display(Name="نام")]
        [RequiredDependent("ContactTypeId", PropertyValue="1", ErrorMessage="پر کردن فیلد نام الزامی می باشد")]
        [StringLength(30, ErrorMessage="حداکثر تعداد مجاز حروف فیلد نام سی حرف می باشد")]
        public String FirstName { get; set; }

        [Display(Name = "نام خانوادگی")]
        [RequiredDependent("ContactTypeId", PropertyValue = "1", ErrorMessage = "پر کردن فیلد نام خانوادگی الزامی می باشد")]
        [StringLength(30, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد نام خانوادگی سی حرف می باشد")]
        public String LastName { get; set; }

        [Display(Name = "نام کامل به انگلیسی")]
        [RequiredDependent("ContactTypeId", PropertyValue = "1", ErrorMessage = "پر کردن فیلد نام کامل به انگلیسی الزامی می باشد")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد نام کامل با انگلیسی پنجاه حرف می باشد")]
        public String EnglishFullName { get; set; }

        [Display(Name = "کد ملی")]
        [RequiredDependent("ContactTypeId", PropertyValue = "1", ErrorMessage = "پر کردن فیلد کد ملی الزامی می باشد")]
        [StringLength(10, ErrorMessage = "کد ملی باید ده رقمی باشد", MinimumLength=10)]
        public String NationalCode { get; set; }

        [Display(Name = "نام پدر")]
        [RequiredDependent("ContactTypeId", PropertyValue = "1", ErrorMessage = "پر کردن فیلد نام پدر الزامی می باشد")]
        [StringLength(30, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد نام پدر سی حرف می باشد")]
        public String FatherName { get; set; }

        [Display(Name = "شماره شناسنامه")]
        [RequiredDependent("ContactTypeId", PropertyValue = "1", ErrorMessage = "پر کردن فیلد شماره شناسنامه الزامی می باشد")]
        [StringLength(10, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد نام خانوادگی ده حرف می باشد")]
        public String IdentityNumber { get; set; }

        [Display(Name = "محل صدور شناسنامه")]
        [RequiredDependent("ContactTypeId", PropertyValue = "1", ErrorMessage = "پر کردن فیلد محل صدور شناسنامه الزامی می باشد")]
        [StringLength(30, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد محل صدور شناسنامه سی حرف می باشد")]
        public String IdentityIssuePlace { get; set; }

        [Display(Name = "شغل")]
        [RequiredDependent("ContactTypeId", PropertyValue = "1", ErrorMessage = "پر کردن فیلد شغل الزامی می باشد")]
        [StringLength(30, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد شغل سی حرف می باشد")]
        public String Job { get; set; }

        [Display(Name = "رشته تحصیلی")]
        [RequiredDependent("ContactTypeId", PropertyValue = "1", ErrorMessage = "پر کردن فیلد رشته تحصیلی الزامی می باشد")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف رشته تحصیلی پنجاه حرف می باشد")]
        public String EducationalMajor { get; set; }

        [Display(Name = "تحصیلات دانشگاهی")]
        [RequiredDependent("ContactTypeId", PropertyValue = "1", ErrorMessage = "پر کردن فیلد تحصیلات دانشگاهی الزامی می باشد")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد تحصیلات دانشگاهی پنجاه حرف می باشد")]
        public String AcademicDegree { get; set; }

        #endregion

        #region company contact properties

        [Display(Name = "نام شرکت")]
        [RequiredDependent("ContactTypeId", PropertyValue = "2", ErrorMessage = "پر کردن فیلد نام شرکت الزامی می باشد")]
        [StringLength(100, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد نام شرکت صد حرف می باشد")]
        public String CompanyName { get; set; }

        [RequiredDependent("ContactTypeId", PropertyValue = "2", ErrorMessage = "پر کردن فیلد نام انگلیسی شرکت الزامی می باشد")]
        [Display(Name = "نام انگلیسی شرکت")]
        [StringLength(100, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد نام انگلیسی شرکت صد حرف می باشد")]
        public String CompanyEnglishName { get; set; }

        [Display(Name = "شماره ثبت")]
        [RequiredDependent("ContactTypeId", PropertyValue = "2", ErrorMessage = "پر کردن فیلد شماره ثبت الزامی می باشد")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد شماره ثبت پنجاه حرف می باشد")]
        public String RegistrationNumber { get; set; }

        [Display(Name = "نام مدیر عامل")]
        [RequiredDependent("ContactTypeId", PropertyValue = "2", ErrorMessage = "پر کردن فیلد نام مدیر عامل الزامی می باشد")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد نام مدیرعامل پنجاه حرف می باشد")]
        public String ManagerFirstName { get; set; }

        [Display(Name = "نام خانوادگی مدیر عامل")]
        [RequiredDependent("ContactTypeId", PropertyValue = "2", ErrorMessage = "پر کردن فیلد نام خانوادگی مدیر عامل الزامی می باشد")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد نام خانوادگی مدیرعامل پنجاه حرف می باشد")]
        public String ManagerLastName { get; set; }

        [Display(Name = "نام کامل مدیرعامل به انگلیسی")]
        [RequiredDependent("ContactTypeId", PropertyValue = "2", ErrorMessage = "پر کردن فیلد نام کامل مدیرعامل به انگلیسی الزامی می باشد")]
        [StringLength(100, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد نام کامل مدیرعامل به انگلیسی صد حرف می باشد")]
        public String ManagerFullNameEnglish { get; set; }

        [Display(Name = "کد ملی مدیرعامل")]
        [RequiredDependent("ContactTypeId", PropertyValue = "2", ErrorMessage = "پر کردن فیلد کد ملی مدیرعامل الزامی می باشد")]
        [StringLength(10, ErrorMessage = "کد ملی مدیرعامل باید ده رقمی باشد", MinimumLength = 10)]
        public String ManagerNationalCode { get; set; }

        [Display(Name = "رشته تحصیلی مدیرعامل")]
        [RequiredDependent("ContactTypeId", PropertyValue = "2", ErrorMessage = "پر کردن فیلد رشته تحصیلی مدیرعامل الزامی می باشد")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد رشته تحصیلی مدیرعامل پنجاه حرف می باشد")]
        public String ManagerEducationalMajor { get; set; }

        [Display(Name = "تحصیلات دانشگاهی مدیرعامل")]
        [RequiredDependent("ContactTypeId", PropertyValue = "2", ErrorMessage = "پر کردن فیلد تحصیلات دانشگاهی مدیرعامل الزامی می باشد")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد تحصیلات دانشگاهی مدیرعامل پنجاه حرف می باشد")]
        public String ManagerAcademicDegree { get; set; }

        [Display(Name = "زمینه فعالیت")]
        [RequiredDependent("ContactTypeId", PropertyValue = "2", ErrorMessage = "پر کردن فیلد زمینه فعالیت الزامی می باشد")]
        [StringLength(50, ErrorMessage = "حداکثر تعداد مجاز حروف فیلد زمینه فعالیت پنجاه حرف می باشد")]
        public String CompanyActivityField { get; set; }

        #endregion

        [Display(Name = "نوع سرویس")]
        [RequiredWithInitialValue(ErrorMessage = "انتخاب نوع سرویس الزامی می باشد", InitialValueString="-1")]
        public int? ServiceId { get; set; }

        [Display(Name = "تاریخ سفارش")]
        public DateTime? OrderDate { get; set; }
    }
}